package com.ruoyi.bole.service.impl;

import java.util.List;

import com.ruoyi.bole.vo.ResultVO;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.transaction.annotation.Transactional;
import com.ruoyi.bole.domain.BoleContentImage;
import com.ruoyi.bole.mapper.BoleContentMapper;
import com.ruoyi.bole.domain.BoleContent;
import com.ruoyi.bole.service.IBoleContentService;

/**
 * 内容信息Service业务层处理
 * 
 * @author WuJiaLe
 * @date 2025-03-22
 */
@Service
public class BoleContentServiceImpl implements IBoleContentService 
{
    @Autowired
    private BoleContentMapper boleContentMapper;

    @Override
    public ResultVO getViewAndRegistrationCount(Long contentId) {
        return boleContentMapper.getViewAndRegistrationCount(contentId);
    }

    @Override
    public int updateBoleContentViewCount(Long contentId) {
        return boleContentMapper.updateBoleContentViewCount(contentId);
    }

    /**
     * 查询内容信息
     * 
     * @param contentId 内容信息主键
     * @return 内容信息
     */
    @Override
    public BoleContent selectBoleContentByContentId(Long contentId)
    {
        return boleContentMapper.selectBoleContentByContentId(contentId);
    }

    /**
     * 查询内容信息列表
     * 
     * @param boleContent 内容信息
     * @return 内容信息
     */
    @Override
    public List<BoleContent> selectBoleContentList(BoleContent boleContent)
    {
        return boleContentMapper.selectBoleContentList(boleContent);
    }

    /**
     * 新增内容信息
     * 
     * @param boleContent 内容信息
     * @return 结果
     */
    @Transactional
    @Override
    public int insertBoleContent(BoleContent boleContent)
    {
        boleContent.setCreateTime(DateUtils.getNowDate());
        int rows = boleContentMapper.insertBoleContent(boleContent);
        insertBoleContentImage(boleContent);
        return rows;
    }

    /**
     * 修改内容信息
     * 
     * @param boleContent 内容信息
     * @return 结果
     */
    @Transactional
    @Override
    public int updateBoleContent(BoleContent boleContent)
    {
        boleContent.setUpdateTime(DateUtils.getNowDate());
        boleContentMapper.deleteBoleContentImageByContentId(boleContent.getContentId());
        insertBoleContentImage(boleContent);
        return boleContentMapper.updateBoleContent(boleContent);
    }

    /**
     * 批量删除内容信息
     * 
     * @param contentIds 需要删除的内容信息主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteBoleContentByContentIds(Long[] contentIds)
    {
        boleContentMapper.deleteBoleContentImageByContentIds(contentIds);
        return boleContentMapper.deleteBoleContentByContentIds(contentIds);
    }

    /**
     * 删除内容信息信息
     * 
     * @param contentId 内容信息主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteBoleContentByContentId(Long contentId)
    {
        boleContentMapper.deleteBoleContentImageByContentId(contentId);
        return boleContentMapper.deleteBoleContentByContentId(contentId);
    }

    /**
     * 新增内容图片信息
     * 
     * @param boleContent 内容信息对象
     */
    public void insertBoleContentImage(BoleContent boleContent)
    {
        List<BoleContentImage> boleContentImageList = boleContent.getBoleContentImageList();
        Long contentId = boleContent.getContentId();
        if (StringUtils.isNotNull(boleContentImageList))
        {
            List<BoleContentImage> list = new ArrayList<BoleContentImage>();
            for (BoleContentImage boleContentImage : boleContentImageList)
            {
                boleContentImage.setContentId(contentId);
                list.add(boleContentImage);
            }
            if (list.size() > 0)
            {
                boleContentMapper.batchBoleContentImage(list);
            }
        }
    }
}
